package controllers;

import java.sql.Date;
import java.sql.SQLException;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.List;

import models.Coralista;
import models.Usuario;
import play.db.DB;
import play.mvc.Controller;

public class CoralistaController extends Controller {
	
	public static void index() {
		if(! Application.isLogged()) return;
		
		String menu;
    	String rodape = Application.rodapebasic;
    	if(Application.sessao.get("tipo").compareTo("0") == 0){
    		menu = Application.menubasic;
    	}
    	else{
    		menu = Application.menufull;
    	}
		
		// Mostra a tela de cadastro
		render("Application/cadCoralista.html", menu, rodape);
    }
	
	public static void exibicao() {
		if(! Application.isLogged()) return;
		
		String menu;
    	String rodape = Application.rodapebasic;
    	if(Application.sessao.get("tipo").compareTo("0") == 0){
    		menu = Application.menubasic;
    	}
    	else{
    		menu = Application.menufull;
    	}
		
		try {
			List<Usuario> lis = Coralista.all();
			
			// Mostra a tela de exibicao
	    	render("Application/exibicaoCoralista.html", lis, menu, rodape);
		}
		catch(SQLException ex) {
			String msg = "O codigo SQL teve um comportamento inesperado!";
    		
    		// Java Script mostrando a mensagem de erro!
            String 	script = "<script language=\"javascript\" type=\"text/javascript\">";
            		script += "alert ( \" " + msg + "\" ) </script> ";
            render("Application/cadCoralista.html", script, menu, rodape);
            return;
		}
    }
	
	public static void exibicao(String script) {
		if(! Application.isLogged()) return;
		
		String menu;
    	String rodape = Application.rodapebasic;
    	if(Application.sessao.get("tipo").compareTo("0") == 0){
    		menu = Application.menubasic;
    	}
    	else{
    		menu = Application.menufull;
    	}
		
		try {
			List<Usuario> lis = Coralista.all();
			
			// Mostra a tela de exibicao
	    	render("Application/exibicaoCoralista.html", lis, script, menu, rodape);
		}
		catch(SQLException ex) {
			String msg = "O codigo SQL teve um comportamento inesperado!";
    		
    		// Java Script mostrando a mensagem de erro!
            script = "<script language=\"javascript\" type=\"text/javascript\">";
            		script += "alert ( \" " + msg + "\" ) </script> ";
            render("Application/cadCoralista.html", script, menu, rodape);
            return;
		}
    }

    public static void add() {
    	if(! Application.isLogged()) return;
    	
		String menu;
    	String rodape = Application.rodapebasic;
    	if(Application.sessao.get("tipo").compareTo("0") == 0){
    		menu = Application.menubasic;
    	}
    	else{
    		menu = Application.menufull;
    	}
    	
    	String msg = "";
    	
    	// Criando o coralista
        Usuario coral = new Coralista();
        coral.setNome(params.get ("nome"));
        coral.setEmail(params.get ("email"));
        coral.setEndereco(params.get ("endereco"));
        coral.setLogin(params.get ("login"));
        coral.setNaipe( Integer.parseInt(params.get ("naipe")));
        
        // Data de nascimento
        String nasc = params.get ("nascimento");
        try {
        	Date date = new Date( new SimpleDateFormat("dd/MM/yyyy").parse(nasc).getTime() );
        	coral.setDataNascimento(date);
        }
        catch(ParseException ex) {
        	msg += "A data nao esta em formato valido. O formato correto e dd/mm/aaaa.";
        	
        	// Java Script mostrando a mensagem de erro!
            String 	script = "<script language=\"javascript\" type=\"text/javascript\">";
            		script += "alert ( \" " + msg + "\" ) </script> ";
            render("Application/cadCoralista.html", script , menu, rodape);
            
        	return;
        }
        
        coral.setSenha(params.get ("senha"));
        coral.setTelefone(params.get ("telefone"));
        
        // Validacao dos campos
    	if (coral.getLogin().isEmpty()) {
    		msg += "Login Invalido!";
    	} else if (!(coral.getSenha().equals( params.get("senha2") ))) {
        	msg += "A senha e sua confirmacao nao estao iguais!";
        } else if(coral.getSenha().length() <= 5) {
        	msg += "A senha deve possuir no minimo 6 caracteres!";
        } else {
        	// Deu certo! Inserir no banco
        	
        	try {
        		coral.save();
        		exibicao();
        	}
        	catch(SQLException ex) {
        		msg = "O codigo SQL teve um comportamento inesperado!";
        		
        		// Java Script mostrando a mensagem de erro!
                String 	script = "<script language=\"javascript\" type=\"text/javascript\">";
                		script += "alert ( \" " + msg + "\" ) </script> ";
                render("Application/cadCoralista.html", script, menu, rodape);
                return;
        	}
        	
        	return;
        }
        
        // Java Script mostrando a mensagem de erro!
        String 	script = "<script language=\"javascript\" type=\"text/javascript\">";
        		script += "alert ( \" " + msg + "\" ) </script> ";
        render("Application/cadCoralista.html", script, menu, rodape);
	}
    
    public static void excluirCoralista(int codigoUsuario) {
    	if(!Application.isLogged()) return;
    	Usuario.delete(codigoUsuario);
    	exibicao();
    }
   
}
